#ifndef CLASE_H_
#define CLASE_H_

#include <iostream>
#include <fstream>
#include <string>
#include <list>
#include "Socket.h"
#include "Hilo.h"

class Clase : public Hilo {
	std::string nombre;
	int codigo;
	int clave;   // si la clase es publico la clave es cero!
//	fecha;
//	hora;
	std::string descripcion;
	std::list<Socket*> socket_alumnos_av;
	//std::list<Socket*> socket_alumnos;
	std::list<Socket*>::iterator it_socket;
	std::list<std::string> alumnos_inscriptos;
	Socket* socket_instructor_av;
	std::list<std::ifstream> adjuntos;
	int curso;   // cero si no pertenece a ninguno
	bool clase_iniciada;
	bool clase_terminada;
	bool fuera_linea;
	bool en_accion;

public:
	Clase(std::string nombre, int codigo, bool *clase_terminada);
	virtual ~Clase();
    int getCodigo();
    void setSocket_Instr(Socket* socket_instructor);
    void inscribirAlumno(std::string nombre_Alumno);
    std::list<Socket*> getSocket_alumnos_av();
    void setCodigo(int codigo);
    void verInscriptos();
    void agregarSocketAlumno_AV(Socket *socket_av);
    void terminarClase();
    void iniciarClase();
protected:
    void run();
};

#endif
